Network simulation provides a means for evaluating and assessing communication performance based on modeling of various elements. In the current state of the art, a network simulator may include models for propagation loss, antennas, transmitter and receiver models, queuing, and protocol stacks. They usually include a means for specifying a communication load; this may be in the form of constant, variable or function-based bit rate generators, based on parametric models of application level codes (such as FTP or TELNET), etc. Most general-purpose network simulators are discrete-event based, meaning that models and load generators insert and extract ‘time-stamped events’ to/from a queue which are processed in-temporal order to maintain causality. Some of these events may represent packet queue insertion, removal or transference in a packet-based network, similar operations for messages in a message-based system as well as other abstract, non-physical elements that are artifacts of the modeling.
Many advancements have taken place in network simulation. For example, U.S. Pat. No. 6,427,132, “System, method and article of manufacture for demonstrating E-commerce capabilities via a simulation on a network” purports to disclose simulation of a more specific network simulation application in terms of an e-commerce user. Likewise, U.S. Pat. No. 6,134,514, “Large-scale network simulation method and apparatus”, purports to disclose performing the simulation more efficiently by using distributed/parallel-programming techniques. U.S. Pat. No. 5,881,269, “Simulation of multiple local area network clients on a single workstation” purports to disclose efficient simulation of multiple clients using a single workstation. U.S. Pat. No. 6,134,514, “Large-scale network simulation method and apparatus” purports to disclose execution of the simulation using parallel computational techniques. U.S. Pat. No. 5,809,282, “Automated network simulation and optimization system” purports to disclose the use of network simulation to aid in network deployment, design and optimization. U.S. Pat. No. 5,794,128, “Apparatus and processes for realistic simulation of wireless information transport systems” purports to disclose the use of specific propagation loss models in simulation. US Patent Application No. 20010051862, “Simulator, simulation method, and a computer product” purports to disclose the use of measurements and prediction to aid in the creation of network simulation and modeling.
Similar to network simulation, network emulation uses hardware or software techniques to present varied network conditions to network application codes. In a typical setup, one or more network application codes (i.e., those that communicate over a network) are connected to a network emulation facility. Such a facility, for example, allows the application code(s) to be tested in a local network environment (e.g. on a LAN) while experiencing various network conditions that occur in wide area networks. These conditions can include packet losses, duplicate packets and out of order packet arrivals as well as other conditions. An example of a tool that provides network emulation is NIST Net. It allows statistical settings for determining packet losses, can reorder packets and provides other features based on rules defined in user settings. Some existing emulation techniques use address translations as a means for including application code(s) in the emulation. For such an emulation facility, inclusion of addresses in the data portion of a message(s) becomes problematic as the application code embedded address and that used during the emulation may be different (see Simmonds, Bradford, & Unger, “Applying parallel discrete event simulation to network emulation”, Workshop on Parallel and Distributed Simulation (PADS), Bologna, Italy, pp. 15-22, 2000 heretofore called the “Simmonds reference”). While providing no solution, the Simmonds reference properly identifies the problem that most packet rewrite methods bear when the carrying network addresses in the data payload. They correctly state that this is “a difficult, computationally expensive or impossible problem even if a great deal is known about message formats.”
Some extensions to basic emulation have been previously proposed. For example, U.S. Pat. No. 6,314,531, “Method and system for testing and debugging distributed software systems by using network emulation” purports to disclose the ability to avoid having to make any changes to the application code while maintaining the ability to emulate. U.S. Pat. No. 6,028,846, “Method and system for testing real-time delivery of packets of data” purports to disclose the use of a simulator, rather than a user-defined rule-set as in NIST Net, to act as an emulator between just a pair of network nodes. U.S. Pat. No. 5,862,362, “Network failure simulator” purports to disclose using user-defined settings to control and direct packet handlers that may emulate network disconnect on a workstation. U.S. Pat. No. 5,828,855, “Socket simulation protocol for network printing systems” purports to disclose emulating a network socket interface for a printer. Recent open publications have also expanded the forefront of emulation technology, for example, by using parallel simulation as the emulator and using packet-level rewriting/translation or insertion of routers between clients and servers to act in the emulation of the simulated network conditions (see Simmonds reference; and NIST Net, Computer Communications Review (June 2003).